package controlador;

import vista.JFPartida;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javabean.JPanelImagen;
import modelo.Partida;
import modelo.PartidaDao;

public class ControladorJFPartida implements ActionListener {

	private JFPartida ventanaPartida;
	private Partida partida;
	int nivel_;
	String tiempo_; 
	private char[] ArrPalabra;
	
     private static final char letras[] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','ñ','o','p','q','r','s','t','u','v','w','x','y','z'};
    private String palabra, jugador;
    private int niv;
    private int intentos=8;
	public ControladorJFPartida(String frase, int nivel) 
	{
		super();
		
		palabra= frase;
		niv= nivel;
		int tamaño= palabra.length();
		ArrPalabra= new char[tamaño]; 
		llenarArreglo(ArrPalabra);
		this.ventanaPartida = new JFPartida();
		this.ventanaPartida.setLocation(480,210);
		this.ventanaPartida.setVisible(true);	
		this.ventanaPartida.addListener(this);
		ventanaPartida.setLocationRelativeTo(null);
		ventanaPartida.ImprimirFrase(ArrPalabra);	
		ventanaPartida.ImprimirIntentos(intentos);

	}

	@Override
	public void actionPerformed(ActionEvent e) {
		String actionCommand = e.getActionCommand();
		
		if (actionCommand.equals("A")) {
			char l = letras[0];
			if(letraInvalida(l)){
				buscarLetra(l);
			}
		else{
		  intentoFallido(intentos);
		  }
		}		
		else if (actionCommand.equals("B")) {
			char l = letras[1];
			if(letraInvalida(l)){
			buscarLetra(l);
			}
		else{
			 intentoFallido(intentos);
		}	
		}
		
		else if (actionCommand.equals("C")) {
			char l = letras[2];
			if(letraInvalida(l)){
			buscarLetra(l);
		}
		else{
			 intentoFallido(intentos);
		}	
		}
		
		else if (actionCommand.equals("D")) {
			char l = letras[3];
			if(letraInvalida(l)){
			buscarLetra(l);
			}
			else{
				 intentoFallido(intentos);
				}	
		}
		
		else if (actionCommand.equals("E")) {
			char l = letras[4];
			if(letraInvalida(l)){
				buscarLetra(l);
			}
			else{
				 intentoFallido(intentos);
				}	
		}
		else if (actionCommand.equals("F")) {
			char l = letras[5];
			if(letraInvalida(l)){
				buscarLetra(l);
			}
			else{
				 intentoFallido(intentos);
				}	
		}
		
		else if (actionCommand.equals("G")) { 
			char l = letras[6];
			if(letraInvalida(l)){
			buscarLetra(l);
			}
			else{
				 intentoFallido(intentos);
				}	
		}
		else if (actionCommand.equals("H")) {
			char l = letras[7];
			if(letraInvalida(l)){
			buscarLetra(l);
			}
			else{
				 intentoFallido(intentos);
				}	
		}
		else if (actionCommand.equals("I")) {
			char l = letras[8];
			if(letraInvalida(l)){
			buscarLetra(l);
			}
			else{
				 intentoFallido(intentos);
				}	
		}
		else if (actionCommand.equals("J")) {
			char l = letras[9];
			if(letraInvalida(l)){
			buscarLetra(l);
			}
			else{
				 intentoFallido(intentos);
				}	
		}
		else if (actionCommand.equals("K")) {
			char l = letras[10];
			if(letraInvalida(l)){
			buscarLetra(l);
			}
			else{
				 intentoFallido(intentos);
				}	
		}
		else if (actionCommand.equals("L")) {
			char l = letras[11];
			if(letraInvalida(l)){
			buscarLetra(l);
			}
			else{
				 intentoFallido(intentos);
				}	
		}
		else if (actionCommand.equals("M")) {
			char l = letras[12];
			if(letraInvalida(l)){
			buscarLetra(l);
			}
			else{
				 intentoFallido(intentos);
				}	
		}
		else if (actionCommand.equals("N")) {
			char l = letras[13];
			if(letraInvalida(l)){
			buscarLetra(l);
			}
			else{
				 intentoFallido(intentos);
				}	
		}
		else if (actionCommand.equals("Ñ")) {
			char l = letras[14];
			if(letraInvalida(l)){
			buscarLetra(l);
			}
			else{
				 intentoFallido(intentos);
				}	
		}
		else if (actionCommand.equals("O")) {
			char l = letras[15];
			if(letraInvalida(l)){
			buscarLetra(l);
			}
			else{
				 intentoFallido(intentos);
				}	
		}
		else if (actionCommand.equals("P")) {
			char l = letras[16];
			if(letraInvalida(l)){
			buscarLetra(l);
			}
			else{
				 intentoFallido(intentos);
				}	
		}
		else if (actionCommand.equals("Q")) {
			char l = letras[17];
			if(letraInvalida(l)){
			buscarLetra(l);
			}
			else{
				 intentoFallido(intentos);
				}	
		}
		else if (actionCommand.equals("R")) {
			char l = letras[18];
			if(letraInvalida(l)){
			buscarLetra(l);
			}
			else{
				 intentoFallido(intentos);
				}	
		}
		else if (actionCommand.equals("S")) {
			char l = letras[19];
			if(letraInvalida(l)){
			buscarLetra(l);
			}
			else{
				 intentoFallido(intentos);
				}	
		}
		else if (actionCommand.equals("T")) {
			char l = letras[20];
			if(letraInvalida(l)){
			buscarLetra(l);
			}
			else{
				 intentoFallido(intentos);
				}	
		}
		else if (actionCommand.equals("U")) {
			char l = letras[21];
			if(letraInvalida(l)){
			buscarLetra(l);
			}
			else{
				 intentoFallido(intentos);
				}	
		}
		else if (actionCommand.equals("V")) {
			char l = letras[22];
			if(letraInvalida(l)){
			buscarLetra(l);
			}
			else{
				 intentoFallido(intentos);
				}	
		}
		else if (actionCommand.equals("W")) {
			char l = letras[23];
			if(letraInvalida(l)){
			buscarLetra(l);
			}
			else{
				 intentoFallido(intentos);
				}	
		}
		else if (actionCommand.equals("X")) {
			char l = letras[24];
			if(letraInvalida(l)){
			buscarLetra(l);
			}
			else{
				 intentoFallido(intentos);
				}	
		}
		else if (actionCommand.equals("Y")) {
			char l = letras[25];
			if(letraInvalida(l)){
			buscarLetra(l);
			}
			else{
				 intentoFallido(intentos);
				}	
		}
		else if (actionCommand.equals("Z")) {
			char l = letras[26];
			if(letraInvalida(l)){
			buscarLetra(l);
			}
			else{
				 intentoFallido(intentos);
				}	
		}
	}
	
	  public void llenarArreglo(char[] ArrPalabra)
	   {
			
		  for (int i=0; i < palabra.length(); i++){
				if (palabra.charAt(i) == (' '))
				  ArrPalabra[i]=' ';
				  else
					  ArrPalabra[i]='-';
			}
	   }
			
	public void buscarLetra(char l)
	{		
		palabra= palabra.toLowerCase();    
		        for (int i=0; i < palabra.length(); i++){
		        	if (palabra.charAt(i) == l){   		
		            	  ArrPalabra[i]=l;
		              }		
	            }
		        ventanaPartida.ImprimirFrase(ArrPalabra);
		        
		        if (String.valueOf(ArrPalabra).equals(palabra)){
		        	ventanaPartida.getLblCronometro().Detener();
		        	partida=new Partida();
		        	partida.setNivel(niv);
		        	partida.setTiempo(ventanaPartida.getLblCronometro().getText());
		        	nivel_ = partida.getNivel();
		        	tiempo_ = partida.getTiempo();
		        	new ControladorJFJugador(nivel_, tiempo_);
		        	
		        }
	}
	
	public boolean letraInvalida (char l)
	{
		boolean enc= false;
		String aux,aux1;
		palabra= palabra.toLowerCase();
		int i=0;
			do
			{
				aux=String.valueOf(palabra.charAt(i));
				aux1=String.valueOf(l);
				if (aux.equals(aux1)) {
					enc= true;
					}
				else {
					enc= false;
					}
				i++;
			} 
			while ((enc!=true) && (i<palabra.length()));
	   return enc; 
	}

   public void intentoFallido(int inten)
   {		   
      inten--;
      intentos=inten;
      ventanaPartida.ImprimirIntentos(inten);
      
      if (intentos==7){
    	 ventanaPartida.PanelImagenes(intentos, "/imagenes/1.png");	
		}
		if (intentos==6){
			ventanaPartida.PanelImagenes(intentos, "/imagenes/2.png");
		}
		else if (intentos==5){
			ventanaPartida.PanelImagenes(intentos, "/imagenes/3.png");
		}
		else if (intentos==4){
			ventanaPartida.PanelImagenes(intentos, "/imagenes/4.png");
		}
		else if (intentos==3){
			ventanaPartida.PanelImagenes(intentos, "/imagenes/5.png");
		}
		else if (intentos==2){
			ventanaPartida.PanelImagenes(intentos, "/imagenes/6.png");
		}
		else if (intentos==1){
			ventanaPartida.PanelImagenes(intentos, "/imagenes/7.png");
		}
		else if (intentos==0){
			ventanaPartida.PanelImagenes(intentos, "/imagenes/8.png");
			ventanaPartida.mostrarMensaje("HAS PERDIDO...");
			new ControladorJFPrincipal();
	   }   
   }
}
